python_base = {
    "python介绍": {
        "python基础知识": {
            "开源模块": "100(80)",
            "标准库": "100(80)",
            "自定义模块": "100(70)"}
    },
    "IDE": {
        "IDLE": {
            "操作": "100(90)",
            "意义": "100(80)"
        },
        "Jupyter notebook": {
            "操作": "100(90)",
            "拓展插件": "100(80)"
        },
        "Pycharm": {
            "操作": "100(90)",
            "界面选项": "100(80)"
        }
    },
    "Anaconda": {
        "安装、配置与使用": "100(85)",
        "意义": "100(75)"
    },
    "变量": {
        "赋值": "100(90)",    # 直接用“=”进行赋值
        "数据类型": {
            "数字": {
                "比较大小": "100(85)",
                "运算": "100(80)"
            },
            "字符串": {
                "单/双/三引号": "100(80)",
                # 举例：定义一个字符串Let's go，不能使用单引号（已存在一个）。①可以使用转义字符“\”加上“'”，表示单引号str = Let\'s go
                # ②若使用双引号，则字符串内的单引号作为字符处理:str = "Let's go"  ③已有双引号，则可使用单引号定义 str = 'str01:"Let's go"'
                # 三引号可用于多行注释或字符串
                "转义": "100(75)",
                "占位符与 format() ": "100(85)",
                # %s格式化一个对象为字符(string = "good" print("string=%s" %string) --> string=good  )
                # %d打印整数(print ("I am %d years old"%(19)) -->  I am 19 years old)
                # %f打印浮点数(print ("His height is %f cm"%(183.6)) -->  His height is 183.6 cm)
                "拼接": "100(80)",
                "拆分 split()": "100(90)"  # str.split(分割符, 分割次数).
            },
        },
        "输出与用户输入": "100(90)"   # input
    },
    "流程控制语句": {
        "条件语句": {
            "if 语句": "100(80)",
            "else 语句": "100(80)",
            "elif 语句": "100(80)"
        },
        "循环语句": {
            "while 循环": "100(75)",  # 需要加入循环结束条件，然后break跳出循环
            "for 循环": {
                "循环迭代数字变量": "100(90)",    # for i in [1,2,3]:  print(i)
                "循环迭代字符串变量": "100(85)",  # for ch in "hello":  print(ch)
                "迭代指定的次数": "100(90)",   # for num in range(2): print("hello")
             },
        },
        "循环嵌套": "100(80)"
    },
    "数据结构": {
        "列表": {     # [ ]
            "操作": {
                "增加删除修改": "100(85)",
                "查询（切片）": "100(75)",
                # names = ["Mike","Mary","Jan","Jack"]
                # print(names)    -->  ['Mike','Mary','Jan','Jack']
                # print(names[0],names[2]) #取出某一个值   -->  Mike Jan
                # print(names[1:3]) #切片 取出中间一些连续的值（还是列表）   -->  ['Mike','Jan']
                # print(names[-1]) #切片 取出最后一个值    -->   Jack
                # print(names[-3:-1]) #切片 从后往前取出一些值（还是列表），思考为什么不是[-1:-3]?    -->  ['Mike','Jan']
                # print(names[-2:]) #切片 取到最后一个值   -->  ['Jan','Jack']
                # print(names[:2]) #切片 同上，即“0”可以省略   -->  ['Mike','Mary']
                "清空": "100(85)"    # .clear()
            },
        },
        "字典": {      # { }
            "操作": {
                "创建": "100(85)",
                "查询修改删除": "100(85)",
                "嵌套": "100(85)"
            },
            "键的特征": "100(75)"
        },
        "元组": "100(80)",    # （ ）
        "集合": {
            "创建添加移除": "100(85)",
            "运算": "100(80)"
        },
        "Pandas": "100(50)"
    },
    "函数": {
        "定义": "100(80)",   # def 函数名():
        "使用": {
            "实参和形参": {
                # greet_user(username) # username 为形参；函数完成其工作时所需要的信息。
                # greet_user("ziyang") # "ziyang"为实参；实参是调用函数时传递给函数的信息。
                # 形参：形式参数，不是实际存在的，是虚拟变量。在定义函数和函数体的时候使用形参，目的是在函数调用时接收实参
                # 实参：实际参数，调用函数时传递给函数的参数，可以是常量、变量，表达式，函数，传给形参
                # 区别：形参是虚拟的，不占用空间，形参变量只有在被调用时才分配内存单元，实参是一个变量，占用内存空间，数据传递单向，实参传给形参，不能倒过来。
                "位置参数": "100(85)",   # 顺序很重要，请确认函数调用中实参的顺序与函数定义形参的顺序一致
                "关键字参数": "100(85)",
                # 关键参数不可以写在位置参数前面
                "默认值": "100(75)"   # def 函数名(...，形参名=默认值)：
            }
        },
        "返回值": "100(80)",   # 可用return语句将值返回到调用函数的代码行；
        "模块": {
            "调用": "100(80)",
            # 一个模块就是一个.py文件，其中包括一个或者多个函数，模块名就是.py不包含后缀的文件名。
            # 引入模块的方法通常有两种分别是“import 模块”和“from 模块 import 函数”使用“import 模块”时，会引入模块中的所有函数，调用函数时也需要加上模块名。
            "意义": "100(80)"
        }
    }
}